package com.sky.loveshop.api;

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;

/**
 * @author xcy
 * @version V1.0
 * @description 收钱吧订单
 * @date 2024/9/24 22:50
 */
public interface CollectMoneyOrder {

    /**
     * 预下单请求
     */
    @Data
    class PreCreateRequest {

        /**
         * 收钱吧终端ID Y
         */
        @JsonProperty("terminal_sn")
        String terminalSn;

        /**
         * 商户系统订单号 Y
         * 必须在商户系统内唯一；且长度不超过32字节
         */
        @JsonProperty("client_sn")
        String clientSn;

        /**
         * 交易总金额 Y
         * 以分为单位,不超过10位纯数字字符串,超过1亿元的收款请使用银行转账 Y
         */
        @JsonProperty("total_amount")
        String totalAmount;

        /**
         * 支付方式 Y
         * 2:支付宝
         * 3:微信
         */
        @JsonProperty("payway")
        String payWay;

        /**
         * 二级支付方式 N
         * 内容为数字的字符串，如果要使用WAP支付，则必须传 "3"；使用小程序支付，则必须传"4"
         */
        @JsonProperty("sub_payway")
        String subPayWay;

        /**
         * 付款人id N
         * 消费者在支付通道的唯一id，wap支付，小程序支付必传 ，微信WAP支付必须传open_id,支付宝WAP支付必传用户授权的userId
         */
        @JsonProperty("payer_uid")
        String payerUid;

        /**
         * 交易简介 Y
         * 本次交易的概述
         */
        String subject;

        /**
         * 门店操作员 Y
         * 发起本次交易的操作员
         */
        String operator;

        /**
         * 商品详情 N
         * 对商品或本次交易的描述
         */
        String description;

        /**
         * 经度 N
         * 经纬度必须同时出现
         */
        String longitude;

        /**
         * 纬度 N
         * 经纬度必须同时出现
         */
        String latitude;

        /**
         * 扩展参数集合 N
         * 收钱吧与特定第三方单独约定的参数集合,json格式，最多支持24个字段，每个字段key长度不超过64字节，value长度不超过256字节
         * 小程序扫码点餐订单必传参数：{"attach":"OrderSource=FoodOrder"}
         */
        String extended;

        /**
         * 商品详情 N
         * goods_details的值为数组，每一个元素为json，包含五个字段：
         * goods_id商品的编号；
         * goods_name商品名称；
         * quantity商品数量；
         * price商品单价，单位为分；
         * promotion_type优惠类型，0:没有优惠，收钱吧不处理单品信息 1: 支付机构优惠，收钱吧处理单品信息并上送到支付机构
         */
        @JsonProperty("goods_details")
        String goodsDetails;

        /**
         * 反射参数
         * 任何调用者希望原样返回的信息 N
         */
        String reflect;

        /**
         * 支付回调的地址 N
         */
        @JsonProperty("notify_url")
        String notifyUrl;
    }

    @Data
    class ActivateRequest {

        /**
         * 应用ID 必填
         */
        @JsonProperty("app_id")
        private String appId;

        /**
         * 激活码内容 必填
         */
        private String code;

        /**
         * 内容自行定义，同一个app_id下唯一;为了方便识别，建议具有一定的格式； 必填
         * 例：品牌名称+支付场景
         */
        @JsonProperty("device_id")
        private String deviceId;

        /**
         * 第三方终端号，必须保证在app id下唯一 非必填
         */
        @JsonProperty("client_sn")
        private String clientSn;

        /**
         * 终端名 非必填
         */
        private String name;

        /**
         * 当前系统信息，如: Android5.0 非必填
         */
        @JsonProperty("os_info")
        private String osInfo;

        /**
         * SDK版本 非必填
         */
        @JsonProperty("sdk_version")
        private String sdkVersion;
    }


}
